package EjerciciosFinal.ejerciciosFinal;

import junit.framework.Assert;

import org.junit.Test;


public class TestListaDoblementeEnlazada {

	@Test
	public void agregar(){
		Lista<String> listaDoble = new ListaDoblementeEnlazada<String>();
		listaDoble.agregar("nacho");
		listaDoble.agregar("pepe");
		listaDoble.agregar("carlos");
		
		Assert.assertEquals("nacho", listaDoble.obtener(0));
		Assert.assertEquals("pepe", listaDoble.obtener(1));
		Assert.assertEquals("carlos", listaDoble.obtener(2));
	}
	
	@Test
	public void remover(){
		Lista<String> listaDoble = new ListaDoblementeEnlazada<String>();
		listaDoble.agregar("nacho");
		listaDoble.agregar("pepe");
		listaDoble.agregar("carlos");
		
		Assert.assertEquals("pepe", listaDoble.remover(1));
		Assert.assertEquals("carlos", listaDoble.remover(1));
	}
	
	@Test
	public void removerUltimoElemento(){
		Lista<String> listaDoble = new ListaDoblementeEnlazada<String>();
		listaDoble.agregar("nacho");
		listaDoble.agregar("pepe");
		listaDoble.agregar("carlos");
		
		Assert.assertEquals("carlos", listaDoble.remover(2));
		Assert.assertEquals("pepe", listaDoble.remover(1));
	}
	
	@Test
	public void removerPrimerosElemento(){
		Lista<String> listaDoble = new ListaDoblementeEnlazada<String>();
		listaDoble.agregar("nacho");
		listaDoble.agregar("pepe");
		listaDoble.agregar("carlos");
		
		Assert.assertEquals("nacho", listaDoble.remover(0));
		Assert.assertEquals("pepe", listaDoble.remover(0));
		Assert.assertEquals("carlos", listaDoble.remover(0));
	}
	
	
	@Test
	public void agregarEnPrimeraPosicion(){
		Lista<String> listaDoble = new ListaDoblementeEnlazada<String>();
		listaDoble.agregar("nacho");
		listaDoble.agregar("pepe");
		listaDoble.agregar("carlos");
		
		listaDoble.agregar(0, "jose");
		
		Assert.assertEquals("jose", listaDoble.obtener(0));
		Assert.assertEquals("pepe", listaDoble.obtener(1));
		Assert.assertEquals("carlos", listaDoble.obtener(2));
	}
	
	@Test
	public void agregarEnUltimaPosicion(){
		Lista<String> listaDoble = new ListaDoblementeEnlazada<String>();
		listaDoble.agregar("nacho");
		listaDoble.agregar("pepe");
		listaDoble.agregar("carlos");
		
		listaDoble.agregar(2, "jose");
		
		Assert.assertEquals("nacho", listaDoble.obtener(0));
		Assert.assertEquals("pepe", listaDoble.obtener(1));
		Assert.assertEquals("jose", listaDoble.obtener(2));
	}
	
	@Test
	public void agregarEnPosicion(){
		Lista<String> listaDoble = new ListaDoblementeEnlazada<String>();
		listaDoble.agregar("nacho");
		listaDoble.agregar("pepe");
		listaDoble.agregar("carlos");
		
		listaDoble.agregar(1, "jose");
		
		Assert.assertEquals("nacho", listaDoble.obtener(0));
		Assert.assertEquals("jose", listaDoble.obtener(1));
		Assert.assertEquals("carlos", listaDoble.obtener(2));
	}
}
